/** @file nim_data_sync_def.h
 * @brief 数据同步 接口相关的常量函数等定义头文件
 * @copyright (c) 2015-2017, NetEase Inc. All rights reserved
 * @author Harrison
 * @date 2015/2/1
 */

#ifndef NIM_SDK_DLL_EXPORT_HEADERS_DATA_SYNC_DEF_H_
#define NIM_SDK_DLL_EXPORT_HEADERS_DATA_SYNC_DEF_H_

#ifdef __cplusplus
extern "C" {
#endif
/** @enum NIMDataSyncType 数据同步类型 */
enum NIMDataSyncType {
    /// 未读消息同步
    kNIMDataSyncTypeUnreadMsg = 2,
    /// 所有群的信息同步, json_attachment为同步到的team_info json array
    kNIMDataSyncTypeTeamInfo = 3,
    /// 漫游消息同步,每个会话同步到漫游消息都会触发该类通知
    kNIMDataSyncTypeRoamMsg = 7,
    /// 所有群的信息同步, json_attachment为同步到的team_info json array
    kNIMDataSyncTypeSuperTeamInfo = 22,
    /// 群成员列表同步, json_attachment为同步到的tid
    kNIMDataSyncTypeTeamUserList = 1000,
    /// 所有群的成员列表同步完毕, json_attachment为空
    kNIMDataSyncTypeAllTeamUserList = 1001,
    /// 超大群成员列表同步, json_attachment为同步到的tid
    kNIMDataSyncTypeSuperTeamUserList = 1010,
    /// 所有超大群的成员列表同步完毕, json_attachment为空
    kNIMDataSyncTypeAllSuperTeamUserList = 1011,
};

/** @enum NIMDataSyncStatus 数据同步状态 */
enum NIMDataSyncStatus {
    /// 同步完成
    kNIMDataSyncStatusComplete = 1,
};

/** @typedef void (*nim_data_sync_cb_func)(NIMDataSyncType sync_type, NIMDataSyncStatus status, const char *json_attachment, const void *user_data)
 * nim callback function that has been registered in nim_data_sync_reg_complete_cb API
 * @param[out] sync_type 数据同步类型
 * @param[out] status 数据同步状态
 * @param[out] json_attachment 输出的json字符串内容
 * @param[out] user_data APP的自定义用户数据，SDK只负责传回给回调函数，不做任何处理！
 * @return void 无返回值
 */
typedef void (
    *nim_data_sync_cb_func)(enum NIMDataSyncType sync_type, enum NIMDataSyncStatus status, const char* json_attachment, const void* user_data);

#ifdef __cplusplus
};
#endif  //__cplusplus
#endif  // NIM_SDK_DLL_EXPORT_HEADERS_DATA_SYNC_DEF_H_
